package com.demandbreakdown.xiyun.common.annotation;

import java.lang.annotation.*;

/**
 * 操作日志注解
 *
 * @author poxz
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface OperationLog {

    /**
     * 操作描述（必填）
     * 例如："创建空间"、"删除图片"
     */
    String value();

    /**
     * 业务类型（可选）
     * 例如："空间管理"、"图片管理"、"用户管理"
     */
    String bizType() default "";

    /**
     * 是否记录方法参数（默认不记录）
     * Service层参数通常较复杂，建议使用SpEL表达式指定关键参数
     */
    boolean recordParams() default false;

    /**
     * 是否记录返回值（默认不记录）
     * Service层返回值通常较大，一般不需要记录
     */
    boolean recordResult() default false;

    /**
     * 需要记录的参数（SpEL表达式）
     * 例如：{"#userId", "#spaceId", "#spaceAddDTO.spaceName"}
     * 支持获取方法参数、对象属性
     */
    String[] params() default {};
}
